package br.com.ianalise.outros;

import java.rmi.Naming;
import java.text.SimpleDateFormat;

import br.com.ianalise.negocio.excecoes.IAnaliseException;
import br.com.ianalise.negocio.fachada.Fachada;
import br.com.ianalise.negocio.pojo.ConfigRede;

public class ThreadClient extends Thread {

	private static ThreadClient instancia = null;
	private String status;
	private String porta;
	private boolean parar;
	private IObjetoRemoto objetoRemoto;
	
	public static ThreadClient getInstancia(String porta) {
        if (instancia == null) {
                instancia = new ThreadClient(porta);
        }
        return instancia;
	}
	
	public ThreadClient(String porta) {
		super();
		this.porta = porta;
	}
	
	public void run() {
		
		ConfigRede configRede;
		try {
			configRede = Fachada.getInstancia().consultarConfig();
			setObjetoRemoto((IObjetoRemoto)Naming.lookup("rmi://"+configRede.getIpServidor()+"/iAnalise"));

			setStatus("["+new SimpleDateFormat("HH:mm:ss").format(new java.util.Date())+"] Conexão estabelecida com o servidor! Porta: "+this.porta);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			try {
				throw new IAnaliseException(e.toString());
			} catch (IAnaliseException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getPorta() {
		return porta;
	}

	public void setPorta(String porta) {
		this.porta = porta;
	}

	public boolean getParar() {
		return parar;
	}

	public IObjetoRemoto getObjetoRemoto() {
		return objetoRemoto;
	}

	public void setObjetoRemoto(IObjetoRemoto objetoRemoto) {
		this.objetoRemoto = objetoRemoto;
	}

}
